package com.mareas.web.jsf.view;
 
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.RequestScoped;

import org.richfaces.component.SortOrder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.mareas.web.model.Operacion;
import com.mareas.web.model.integration.InformeClienteDTO;
import com.mareas.web.service.InformeClienteService;
 
@Component("informeClienteView")
@ManagedBean
@RequestScoped 
public class InformeClienteView implements Serializable {

	private static final long serialVersionUID = 1270885801711917720L;

	@ManagedProperty(value = "#{informeClienteService}")
	@Autowired
	private InformeClienteService informeClienteService;
    private SortOrder cantidadOperacionesOrder = SortOrder.unsorted;
    private SortOrder importeTotalOrder = SortOrder.unsorted;
    private List<InformeClienteDTO> clientesPeriodo;
    private Integer currentClienteId;
    private String currentClienteNombre;

	public InformeClienteService getInformeClienteService() {
		return informeClienteService;
	}

	public void setInformeClienteService(
			InformeClienteService informeClienteService) {
		this.informeClienteService = informeClienteService;
	}

	public List<InformeClienteDTO> getClientes() {
		return this.informeClienteService.getListadoClientes();
	}	
	
	public SortOrder getCantidadOperacionesOrder() {
		return cantidadOperacionesOrder;
	}

	public void setCantidadOperacionesOrder(SortOrder cantidadOperacionesOrder) {
		this.cantidadOperacionesOrder = cantidadOperacionesOrder;
	}
	
	
	
	/**
	 * @return the currentClienteNombre
	 */
	public String getCurrentClienteNombre() {
		return currentClienteNombre;
	}

	/**
	 * @param currentClienteNombre the currentClienteNombre to set
	 */
	public void setCurrentClienteNombre(String currentClienteNombre) {
		this.currentClienteNombre = currentClienteNombre;
	}

	/**
	 * @return the currentClienteId
	 */
	public Integer getCurrentClienteId() {
		return currentClienteId;
	}

	/**
	 * @param currentClienteId the currentClienteId to set
	 */
	public void setCurrentClienteId(Integer currentClienteId) {
		this.currentClienteId = currentClienteId;
	}

	/**
	 * @param clientesPeriodo the clientesPeriodo to set
	 */
	public void setClientesPeriodo(List<InformeClienteDTO> clientesPeriodo) {
		this.clientesPeriodo = clientesPeriodo;
	}

	
	
	/**
	 * @return the clientesPeriodo
	 */
	public List<InformeClienteDTO> getClientesPeriodo() {
		return clientesPeriodo;
	}

	public void ordenarPorCantidadDeOperaciones() {
        if (cantidadOperacionesOrder.equals(SortOrder.ascending)) {
        	setCantidadOperacionesOrder(SortOrder.descending);
        } else {
        	setCantidadOperacionesOrder(SortOrder.ascending);
        }
    }
	
	public SortOrder getImporteTotalOrder() {
		return importeTotalOrder;
	}

	public void setImporteTotalOrder(SortOrder importeTotalOrder) {
		this.importeTotalOrder = importeTotalOrder;
	}

	public void ordenarPorImporteTotal() {
        if (importeTotalOrder.equals(SortOrder.ascending)) {
        	setImporteTotalOrder(SortOrder.descending);
        } else {
        	setImporteTotalOrder(SortOrder.ascending);
        }
    }
	

	public List<InformeClienteDTO> getObtenerClientesPeriodo() {
			return this.informeClienteService.getListadoClientesPeriodo(this.currentClienteId);
	
	}
}